package com.lintesis.lintesisview.webgui.permiso;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import org.zkoss.zkplus.databind.BindingListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listheader;
import org.zkoss.zul.SimpleConstraint;
import org.zkoss.zul.Textbox;

import com.lintesis.lintesismodel.common.hibernate.GenericDAO;
import com.lintesis.lintesismodel.common.hibernate.HibernateSearchObject;
import com.lintesis.lintesismodel.users.UsrRight;
import com.lintesis.lintesisview.common.ABMDialogCtrl;
import com.lintesis.lintesisview.common.menu.UserWorkspace;
import com.trg.search.Filter;
import com.trg.search.SearchResult;

public class PermisoDialogCtrl extends ABMDialogCtrl<UsrRight>{
	private static final long serialVersionUID = -2161546701721885243L;

	String rightPreffix = "right.dialog.";

	Textbox tbNombre;
//	Textbox tbNombreBusqueda;
//	Checkbox checkShowAllPermisos;
//	Button btSearchPermisoHijo;

	Listheader lhNombreHijo;
	Listheader lhClaveHijo;

	BindingListModelList listModelPermisosHijos;
	Listbox listboxPermisosHijos;
	GenericDAO<UsrRight> gdaoPermisos = new GenericDAO<UsrRight>(UserWorkspace.getInstance().gethSession());
	HibernateSearchObject<UsrRight> hsoPermisos = new HibernateSearchObject<UsrRight>(UsrRight.class);
	HashMap<String, Object> filterPermisos = new HashMap<String, Object>();

	@Override
	protected void doSetReadOnlyComponents()
	{

		roComponents.add(tbNombre);
//		roComponents.add(btSearchPermisoHijo);
//		roComponents.add(tbNombreBusqueda);
//		roComponents.add(checkShowAllPermisos);
		roComponents.add(listboxPermisosHijos);

	}

	@Override
	protected void doSetFieldProperties()
	{
		tbNombre.setConstraint(new SimpleConstraint(SimpleConstraint.NO_EMPTY));
	}

	@Override
	protected void doSetValidation()
	{
		tbNombre.getValue();
	}

	@Override
	protected UsrRight getNewEntidad()
	{
		entity = new UsrRight();
		return entity;

	}

	@Override
	protected String getRightPreffix()
	{
		return rightPreffix;
	}

	@Override
	protected void fillComboBoxs()
	{
//		checkShowAllPermisos.setChecked(true);
//		setSearchFiltersPermisos();
		doSearchPermisos();
	}

//	protected void setSearchFiltersPermisos()
//	{
//		filterPermisos.clear();
//		filterPermisos.put("name", "%" + tbNombreBusqueda.getValue() + "%");
//
//	}

	protected void doSearchPermisos()
	{
		hsoPermisos.addSortAsc("key");
		hsoPermisos.addFilter(Filter.isNotNull("key"));
		SearchResult<UsrRight> initialList = gdaoPermisos.getSRByHashMap(hsoPermisos, 0,0, filterPermisos);
		listModelPermisosHijos = new BindingListModelList(initialList.getResult(), true);
		binder.loadAll();

	}

	@Override
	protected void fillBussinesObject()
	{

	}
	
	public Set<UsrRight> getPermisosHijosSelected()
	{
		if(entity!=null && entity.getChildren()!=null){
			HashSet<UsrRight> h = new HashSet<UsrRight>();
			for(UsrRight u:entity.getChildren()){
				h.add(u);
			}
		}
		return new HashSet<UsrRight>();
	}

//	public void onCheck$checkShowAllPermisos(Event event)
//	{
//		doClearSearchValuesPermisos();
//		doSearchPermisos();
//
//	}

//	public void doClearSearchValuesPermisos()
//	{
//		hsoPermisos.clear();
//		filterPermisos.clear();
//		tbNombreBusqueda.setValue(null);
//		checkShowAllPermisos.setChecked(true);
//	}
//
//	public void onClick$btSearchPermisoHijo(Event e)
//	{
//		setSearchFiltersPermisos();
//		doSearchPermisos();
//		checkShowAllPermisos.setChecked(false);
//	}


	@Override
	protected void doSetClearComponents()
	{
		clearComponents.add(tbNombre);
	}

	public BindingListModelList getListModelPermisosHijos()
	{
		return listModelPermisosHijos;
	}

	public void setListModelPermisosHijos(BindingListModelList listModelPermisosHijos)
	{
		this.listModelPermisosHijos = listModelPermisosHijos;
	}

	@Override
	public String getEntityName()
	{
		return "UsrRight";
	}

}
